Fix SMP boot for kernels without CONFIG_HOTPLUG_CPU.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 28 May 2006 08:46:30 +0000 (09:46 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 28 May 2006 08:46:30 +0000 (09:46 +0100)
The function cpu_is_allowed() appears that it should return a boolean
but in fact returns zero on success and an errno on failure. Thus
rename it to the more vague cpu_up_check(), in line with its return
value and thge fact it has unspecified side effects.

Fix the macro definition of cpu_up_check() when building non-hotplug
kernel to return zero rather than one (which always failed secondary
cpu bringup!).

Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/drivers/xen/core/cpu_hotplug.c
linux-2.6-xen-sparse/drivers/xen/core/smpboot.c
linux-2.6-xen-sparse/include/xen/cpu_hotplug.h

index b70e82a910ac9e500953b271abdee1b338c5896e..cc6be39916d4329759e9d1492c0e8e1e9c07b9a2 100644 (file)
@@ -160,7 +160,7 @@ void smp_resume(void)
                vcpu_hotplug(cpu);
 }
 
-int cpu_up_is_allowed(unsigned int cpu)
+int cpu_up_check(unsigned int cpu)
 {
        int rc = 0;
 
index a52747e833e4e59e10bbbe9378fa86a351fa0289..c4995d838c24c6a828417e4d70ea441c1ef1e749 100644 (file)
@@ -400,7 +400,7 @@ int __devinit __cpu_up(unsigned int cpu)
 {
        int rc;
 
-       rc = cpu_up_is_allowed(cpu);
+       rc = cpu_up_check(cpu);
        if (rc)
                return rc;
 
index 3c4b50fbb3b32c02c243c2d2ddda27c3997b06e9..6df85f949f5c28492b3d4499c6961135db866431 100644 (file)
@@ -13,14 +13,14 @@ void cpu_initialize_context(unsigned int cpu);
 #define cpu_initialize_context(cpu)    ((void)0)
 #endif
 
-int cpu_up_is_allowed(unsigned int cpu);
+int cpu_up_check(unsigned int cpu);
 void init_xenbus_allowed_cpumask(void);
 int smp_suspend(void);
 void smp_resume(void);
 
 #else /* !defined(CONFIG_HOTPLUG_CPU) */
 
-#define cpu_up_is_allowed(cpu)         (1)
+#define cpu_up_check(cpu)              (0)
 #define init_xenbus_allowed_cpumask()  ((void)0)
 
 static inline int smp_suspend(void)